import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;


public class Pelota {
	private int x =500;
	private int y =25;
	private double vx =0;
	private double vy =0;
	private int radio =20;
	private double gravedad = 15;
	private double energiaPerdida=1;//%
	private double friccion = .9;//%
	private double dt =0.2;
	private boolean gameOver=false;
	
	public int getAgilidad() {
		return agilidad;
	}

	public void setAgilidad(int agilidad) {
		this.agilidad = agilidad;
	}

	public int getMaxVelocidad() {
		return maxVelocidad;
	}

	public void setMaxVelocidad(int maxVelocidad) {
		this.maxVelocidad = maxVelocidad;
	}

	private double juegoVy = -75;
	private int agilidad = 1;
	private int maxVelocidad = 20;
	
	public Pelota(int i, int j) {
		// TODO Auto-generated constructor stub
		this.x=i;
		this.y=j;
	}

	public double getJuegoVy() {
		return juegoVy;
	}
	
	public void setJuegoVy(double juegoVy) {
		this.juegoVy = juegoVy;
	}
	
	public int getX() {
		return x;
	}
	
	public int getY() {
		return y;
	}
	
	public int getRadio() {
		return radio;
	}
	
	public void setX(int x) {
		this.x = x;
	}
	
	public void setY(int y) {
		this.y = y;
	}
	
	public double getVx() {
		return vx;
	}
	
	public double getVy() {
		return vy;
	}
	
	public void setVx(double vx) {
		this.vx = vx;
	}
	
	public void setVy(double vy) {
		this.vy = vy;
	}
	
	public double getDt() {
		return dt;
	}
	
	public void setDt(double dt) {
		this.dt = dt;
	}
	
	public void setGravedad(double gravedad) {
		this.gravedad = gravedad;
	}
	
	public double getGravedad() {
		return gravedad;
	}	
	
	public void MoverDerecha(){
		if(vx+agilidad <maxVelocidad){
			vx += agilidad;//aumentar la velocidad
		}
	}
	public void MoverIzquierda(){
		if(vx-agilidad >-maxVelocidad){
			vx -= agilidad;//aumentar la velocidad
		}
	}
	public void MoverAbajo(){
		if(vy+1 <20){
			vy += 1;//aumentar la velocidad
		}
	}
	public void MoverArriba(){
		if(vy-1 >-20){
			vy -= 1;//aumentar la velocidad
		}
	}
	public double getFriccion() {
		return friccion;
	}
	public void Actualizar(PuntoInicial pi){
		//horizontal
		if(x+vx >pi.getWidth()-radio-1){//si topa la parte derecha
			x = pi.getWidth()-radio-1;
			vx=-vx ;
			//x = x;
		}else if(x + vx<0+radio){//si topa la parte izquierda
			x=0+radio;
			vx=-vx;
		}else{
			x += vx ;
		}			
		//vertical
		if(y == pi.getHeight()-radio -1){
			vx*=friccion;//friccion de la parte inferior le resta velocidad en el eje x
			if(Math.abs(vx)< 0.8){
				vx=0;
			}
		}
		if(y >pi.getHeight()-radio-1){//si topa la parte inferior
			/*y=pi.getHeight()-radio-1;
			vy *=energiaPerdida;//energia potencial gravitacional se reduce
			vy=juegoVy ;*/
			gameOver=true;
		}else if(y + vy<0+radio){//si topa la parte superior
			y=0+radio;
			vy=-vy;
		}else{//influencia de la aceleracion en este caso la gravedad
			vy += gravedad*dt;// en la velocidad
			y += vy*dt + .5*gravedad*dt*dt ;//y en la altura
		}			
						
	}
	
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		g.setColor(Color.white);
		g.fillOval(x-radio, y-radio, radio*2, radio*2);
		
	}

	public boolean getGameOver() {
		// TODO Auto-generated method stub
		return gameOver;
	}
}
